//写一个自动生成UUID的函数
export function generateUUID(): string {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
    const r = (Math.random() * 16) | 0,
      v = c == 'x' ? r : (r & 0x3) | 0x8
    return v.toString(16)
  })
}

/**
 * 颜色变亮变暗生成器
 */
export function transformHexColor(color: string): string {
  let tempColor = color
  //如果color长度超过七位
  if (color.length > 7) {
    tempColor = color.slice(0, 7)
  }
  // 格式校验（支持# + 3/6位十六进制）
  if (!/^#([0-9A-Fa-f]{3}){1,2}$/i.test(tempColor)) {
    throw new Error('Invalid hex color format')
  }

  // 去#号并统一转小写
  const cleanHex = tempColor.slice(1).toLowerCase()

  // 将3位格式扩展为6位（abc → aabbcc）
  const fullHex = cleanHex.length === 3 ? cleanHex.replace(/./g, '$&$&') : cleanHex

  // 转换为十进制数值用于比较
  const hexValue = parseInt(fullHex, 16)
  const isLighter = hexValue >= 0x888888 // 判断基准

  // 核心转换逻辑
  const transformed = Array.from(fullHex)
    .map((c) => {
      const value = parseInt(c, 16)
      const newValue = isLighter
        ? (value + 1) % 16 // 更亮方向
        : (value - 1 + 16) % 16 // 更暗方向（处理负数）
      return newValue.toString(16)
    })
    .join('')

  return `#${transformed}`
}

/**
 * 秒数格式化
 * @param totalSeconds 秒
 * @returns
 */
export function formatSeconds(totalSeconds: number): string {
  // 确保输入是整数
  totalSeconds = Math.floor(totalSeconds)

  const days = Math.floor(totalSeconds / 86400)
  const hours = Math.floor((totalSeconds % 86400) / 3600)
  const minutes = Math.floor((totalSeconds % 3600) / 60)
  const seconds = totalSeconds % 60

  // 辅助函数：补零显示
  const pad = (num) => num.toString().padStart(2, '0')

  // 大于等于1天：显示天时分秒
  if (days > 0) {
    return `${days}天${hours}时${pad(minutes)}分${pad(seconds)}秒`
  }
  // 大于等于1小时：显示时分秒
  else if (hours > 0) {
    return `${hours}时${pad(minutes)}分${pad(seconds)}秒`
  }
  // 大于等于1分钟：显示分秒
  else if (minutes > 0) {
    return `${minutes}分${pad(seconds)}秒`
  }
  // 小于1分钟：显示秒
  else {
    return `${seconds}秒`
  }
}
